Android Studio配置应用签名

本文主要参考:
在gradle中为release版本配置签名

任何一个Android APK 发布之前都会进行签名,没有签名的APK是无法在Android device上进行安装和使用的,而且对于发布到Google Play上的同一个应用,自始至终必须使用同一个签名文件,所以必须保存好签名文件。本文介绍如何在build.gradle中为release版本配置签名文件,这样在打包release版本时可以自动进行签名。

明文配置

一般来说,我们直接在Android Studio中配置签名文件,是使用明文配置的,如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
android {

signingConfigs {
release {
storeFile file("/Users/xxx/release_key.jks")
storePassword "123456789"
keyAlias "release_key_alias"
keyPassword "987654321"
}
}

buildTypes {
release {
signingConfig signingConfigs.release
}
}
}

注:此处的storeFile,如果是在Windows系统下,会是以下格式

1
storeFile file("C\:\\Users\\xxx\\release_key.jks")

这样在打包release版本时就会自动签名了。

隐藏密码配置

如果你的代码不会开源,或者是公司项目,公司会保护的很好,那么直接用上面的方式就可以了。但如果是开源项目,那么上面的写法就不太可取了 ,因为这样直接配置会暴露密码啊。接下来介绍如果隐藏密码进行配置:

利用property,将密码和签名文件路径信息保存在项目根目录的local.properties文件里,因为这个文件一般都在.gitignore里自动配置了,所以不会上传出去。

在根目录的local.properties文件中配置以下内容:

1
2
3
4
keystore.path=/Users/xxx/release_key.jks
keystore.password=123456789
keystore.alias=release_key_alias
keystore.alias_password=987654321

然后在你的app目录的build.gradle文件中增加以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// =====配置keystore start=====
def keystoreFilePath = ''
def keystorePSW = ''
def keystoreAlias = ''
def keystoreAliasPSW = ''
// default keystore file, PLZ config file path in local.properties
def keyfile = file('s.keystore.temp')

Properties properties = new Properties()
// local.properties file in the root director
properties.load(project.rootProject.file('local.properties').newDataInputStream())
keystoreFilePath = properties.getProperty("keystore.path")

if (keystoreFilePath) {
keystorePSW = properties.getProperty("keystore.password")
keystoreAlias = properties.getProperty("keystore.alias")
keystoreAliasPSW = properties.getProperty("keystore.alias_password")
keyfile = file(keystoreFilePath)
}
// =====配置keystore end=====

android {
signingConfigs {
release {
storeFile keyfile
storePassword keystorePSW
keyAlias keystoreAlias
keyPassword keystoreAliasPSW
}
}

buildTypes {
release {
if (keyfile.exists()) {
signingConfig signingConfigs.release
}
}
}
}

这样就达到了隐藏的目的。

感谢你的支持,让我继续努力分享有用的技术和知识点!